/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package caintra.Sapra.Pantalla.Abono;

import caintra.Sapra.Model.Abono;
import caintra.Sapra.Model.MovimientosCaintra;
import caintra.Sapra.Model.PrefacturaCaintra;
import caintra.Sapra.Model.Usuario;
import java.util.List;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import org.sapra.echo.wAviso;

/**
 *
 * @author cobain
 */
public class AbonoController implements ActionListener {

    AbonoView abono;
    AbonoQuery ab = new AbonoQuery();
    Usuario user;
    List<MovimientosCaintra> lista_abono;
    public boolean t_puser;
    Abono _ab = new Abono();
    public double m_abono;
    public double m_adeudo;
    public PrefacturaCaintra pf = new PrefacturaCaintra();

    public AbonoController() {
    }

    public AbonoController(AbonoView ab) {
        try {
            this.abono = ab;
            if (abono.usr.getTipoUsuario().equals("A")) {
                t_puser = true;
                action();
            } else {
                t_puser = false;
                //action();
            }

        } catch (Exception e) {
            
        }

    }

    public void action() {
        try {
            if(abono.bandera==false){
            abono.r_abono.setSelected(false);
            abono.r_adeudo.setSelected(false);
            abono.nom_emp.setEnabled(false);
            abono.nom_emp.setText(abono.prefacturaMController.empresa.getRazon_empresa());
            abono.nom_per.setEnabled(false);
            abono.nom_per.setText(abono.prefacturaMController.fecha.toString());
            abono._monto.setEnabled(false);
            abono._monto.setVisible(false);
            abono.txt_comentario.setEnabled(false);
            abono.r_abono.addActionListener(this);
            abono.r_adeudo.addActionListener(this);
            abono.guardar.addActionListener(this);
            abono.limpiar.addActionListener(this);
            abono.eliminar.addActionListener(this);
            abono.salir.addActionListener(this);
            lista_abono = ab.getMovimiento(abono.prefacturaMController.empresa.getEmpresaId(), abono.prefacturaMController.fecha.getCalendarioFacturacionPracticantesId());
            abono.tabla_detalle.setLista_Abono(lista_abono, abono.prefacturaMController.usuario.getLogin());}
 else{
            abono.r_abono.setSelected(false);
            abono.r_adeudo.setSelected(false);
            abono.nom_emp.setEnabled(false);
            abono.nom_emp.setText(abono.pfmcqm.empresa.getRazon_empresa());
            abono.nom_per.setEnabled(false);
            abono.nom_per.setText(abono.pfmcqm.fecha.toString());
            abono._monto.setEnabled(false);
            abono._monto.setVisible(false);
            abono.txt_comentario.setEnabled(false);
            abono.r_abono.addActionListener(this);
            abono.r_adeudo.addActionListener(this);
            abono.guardar.addActionListener(this);
            abono.limpiar.addActionListener(this);
            abono.eliminar.addActionListener(this);
            abono.salir.addActionListener(this);
            lista_abono = ab.getMovimiento(abono.pfmcqm.empresa.getEmpresaId(), abono.pfmcqm.fecha.getCalendarioFacturacionPracticantesId());
            abono.tabla_detalle.setLista_Abono(lista_abono, abono.pfmcqm.usuario.getLogin());

 }

        } catch (Exception e) {
        }
    }

    public void actionPerformed(ActionEvent e) {
        try {
            if (e.getActionCommand().equals("abono")) {
                try {
                    activarRadioAbono(abono.r_abono.isSelected());
                } catch (Exception ex) {
                }
            }
            if (e.getActionCommand().equals("adeudo")) {
                try {
                    activarRadioAdeudo(abono.r_adeudo.isSelected());
                } catch (Exception ex) {
                }
            }
            if (e.getActionCommand().equals("guardar")) {
                try {
                    realizarMovimiento();
                } catch (Exception ex) {
                }
            }
            if (e.getActionCommand().equals("limpiar")) {
                try {
                    resetCampos();
                } catch (Exception ex) {
                }
            }
            if (e.getActionCommand().equals("eliminar")) {
                try {
                    eliminaMovimiento();
                } catch (Exception ex) {
                }
            }
            if (e.getActionCommand().equals("salir")) {
                if(this.abono.bandera==false){
                try {
                    this.abono.prefacturaMController.vista.window_abono.setModal(false);
                    this.abono.prefacturaMController.vista.window_abono.setVisible(false);
                    this.abono.prefacturaMController.vista.window_abono.removeAll();
                    this.abono.prefacturaMController.refreshTabla();
                } catch (Exception ex) {
                }
                }else{

                    try {
                    this.abono.pfmcqm.vista.window_abono.setModal(false);
                    this.abono.pfmcqm.vista.window_abono.setVisible(false);
                    this.abono.pfmcqm.vista.window_abono.removeAll();
                    this.abono.pfmcqm.refreshTabla();
                } catch (Exception ex) {
                }

                }
            }

        } catch (Exception exc) {
        }
    }

    //METODOS.
    public void activarRadioAbono(boolean res) {
        try {
            if (res == true) {
                abono.r_adeudo.setEnabled(false);
                abono._monto.setEnabled(res);
                abono.monto.setVisible(res);
                abono._monto.setVisible(res);
                abono.txt_comentario.setEnabled(res);
            } else {
                abono.r_adeudo.setEnabled(true);
                abono._monto.setEnabled(false);
                abono.monto.setVisible(false);
                abono._monto.setVisible(false);
                abono.txt_comentario.setEnabled(false);

            }

        } catch (Exception e) {
        }

    }

    public void activarRadioAdeudo(boolean res) {
        try {
            if (res == true) {
                abono.r_abono.setEnabled(false);
                abono._monto.setEnabled(res);
                abono.monto.setVisible(res);
                abono._monto.setVisible(res);
                abono.txt_comentario.setEnabled(res);
            } else {
                abono.r_abono.setEnabled(true);
                abono._monto.setEnabled(false);
                abono.monto.setVisible(false);
                abono._monto.setVisible(false);
                abono.txt_comentario.setEnabled(false);

            }

        } catch (Exception e) {
        }

    }

    public void resetCampos() {
        abono._monto.setText("");
        //abono.txt_comentario.setText("");
        abono.txt_comentario.setEnabled(false);
        abono.r_abono.setSelected(false);
        abono.r_adeudo.setSelected(false);
    }

    public MovimientosCaintra setObAbono() {
        MovimientosCaintra mov = null;
        Double monto = 0.00;
        String com = "";
        try {
            mov = new MovimientosCaintra();
            if (abono._monto.getText().trim().equals("")) {
                abono.add(new wAviso("Error","llenar campo monto"));
                //System.out.println("Llenar el campo monto");
                return null;
            }
            try {
                monto = Double.parseDouble(abono._monto.getText());
            } catch (Exception e) {
                abono.add(new wAviso("Error","solo datos numericos"));
                //System.out.println("Solo datos numericos");
                return null;
            }
            mov.setCantidad(monto);

            if (abono.txt_comentario.getText().trim().equals("")) {
                abono.add(new wAviso("Error","llenar campo comentarios"));
                //System.out.println("Llenar el campo monto");
                return null;
            } else {
                com = abono.txt_comentario.getText();
                mov.setComentarios(com);
            }
            if(abono.bandera==false){
            mov.setFk_empresaId(abono.prefacturaMController.empresa.getEmpresaId());
            mov.setFk_periodoId(abono.prefacturaMController.fecha.getCalendarioFacturacionPracticantesId());
            mov.setUsuarioId(abono.prefacturaMController.usuario.getUsuarioId());}else{
                mov.setFk_empresaId(abono.pfmcqm.empresa.getEmpresaId());
            mov.setFk_periodoId(abono.pfmcqm.fecha.getCalendarioFacturacionPracticantesId());
            mov.setUsuarioId(abono.pfmcqm.usuario.getUsuarioId());

            }
            if (abono.r_abono.isSelected() == true) {
                mov.setIsAbono(1);
                m_abono = Double.parseDouble(abono._monto.getText());
                m_adeudo = 0;
            } else {
                mov.setIsAbono(0);
                m_adeudo = Double.parseDouble(abono._monto.getText());
                m_abono = 0;
            }

        } catch (Exception e) {
        }
        return mov;
    }

    public void realizarMovimiento() {
        try {
            MovimientosCaintra _abb = setObAbono();
            if(_abb!=null){
            if (ab.insertMovimiento(_abb) == true) {
                abono.add(new wAviso("Exito","operacion realizada"));
                //System.out.println("operacion realizada");
            } else {
                abono.add(new wAviso("Error","operacion cancelada"));
                //System.out.println("peracion no realizada");
            }
            }else{
                return;
            }
            if(abono.bandera==false){
            this.abono.prefacturaMController._abono=m_abono;
            this.abono.prefacturaMController._adeudo=m_adeudo;}else{
             this.abono.pfmcqm._abono=m_abono;
             this.abono.pfmcqm._adeudo=m_adeudo;
            }
            //System.out.println(this.abono.prefacturaMController._abono+"a ver que onda"+this.abono.prefacturaMController._adeudo);
            resetCampos();
            action();
        } catch (Exception e) {
        }

    }

    public void eliminaMovimiento() {
        try {
            if (abono.tabla_detalle.getSelectionModel().getMinSelectedIndex() >= 0) {
                MovimientosCaintra mov = (MovimientosCaintra) lista_abono.get(abono.tabla_detalle.getSelectionModel().getMinSelectedIndex());
                if (ab.deleteMovimiento(mov.getMovimientos_caintra_id()) == true) {
                    abono.add(new wAviso("Exito","operacion realizada"));
                    //System.out.println("operacion realizada");
                } else {
                    abono.add(new wAviso("Error","operacion cancelada"));
                    //System.out.println("operacion no realizada");
                }
            }
            action();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
